﻿


var tempID;//保存当前的选项的Id;
var gdViewModel;

var getQuestionKind;//全局变量获取选择的试题类型

$(function () {
    $("#submitform").validate({
        rules: {
            TitleId: { required: true, maxlength: 100 }

        },
        messages: {


            TitleId: { required: "<font color='red'>标题为必填项</font>", maxlength: "<font color='red'>标题最大长度不能超过100</font>" }

        }
    });

    
    var ue = new baidu.editor.ui.Editor({ maximumWords: 1000 });//内容使用的编辑器声明
   
    ue.render("editorId");//内容编辑
    //点击编辑图标进行内容编辑
    $("#edit").click(function () {
        var css = $("#editorId").css("display");
        if (css == "block") {
            $("#editorId").hide();
        } else if (css == "none") {
            $("#editorId").show();
        }
    })




    //向导初始化
    $('#bootstrap-wizard-1').bootstrapWizard({
        'tabClass': 'form-wizard',
        onTabClick: function (tab, navigation, index) {
            // alert('on tab click disabled');
            return false;
        },
        //点击“上一步”
        'onPrevious':function(tab, navigation, index)
        {
            var $total = navigation.find('li').length;
            var $current = index + 1;//预获取下一个Index
            if ($current >= $total) {
                $('#bootstrap-wizard-1').find('.pager .next').hide();
                $('#bootstrap-wizard-1').find('.pager .finish').show();
                $('#bootstrap-wizard-1').find('.pager .finish').removeClass('disabled');
            } else {
                $('#bootstrap-wizard-1').find('.pager .next').show();
                $('#bootstrap-wizard-1').find('.pager .finish').hide();
            }
        },
        //点击“下一步”
        'onNext': function (tab, navigation, index) {

          
            var $total = navigation.find('li').length;
            var $current = index + 1;//预获取下一个Index
            if ($current < $total) {
                $('#bootstrap-wizard-1').find('.pager .next').show();
                $('#bootstrap-wizard-1').find('.pager .finish').hide();

            }

            if (index == 1)
            {//当进行第一步的时候获取试题类型
                getQuestionKind= $('input:radio[name="radio"]:checked').val();
                if (typeof (getQuestionKind) == "undefined" && getQuestionKind == null) { //如果没有选择试题类型，不能进行下一步
                    alert("请先选择试题类型！");
                    return false;
                }
                else {
                    if (getQuestionKind == 1 || getQuestionKind == 2) {
                        $("#ContentId").hide();//内容隐藏
                        $("#OptionId").show();//选项显示
                        $("#QuesAnswerId").hide();//答案隐藏
                    }
                    else {
                        $("#OptionId").hide();//选项隐藏
                        $("#ContentId").show();//内容显示
                        $("#QuesAnswerId").show();//显示

                    }

                    gdViewModel.init();
                }
               
               
            }
       
            else if (index == 2) {  
                if (!gdViewModel.QuesDataValidate()) {// 验证标题是否合法
                    return false;
                }

                if (getQuestionKind == 1) {
                    if (!gdViewModel.OptionsValidate()) { //验证单选题的选项设置是否合法
                        return false;
                    }
                }
                gdViewModel.QuestionDataUpdate(); //更新试题到数据库

                $('#bootstrap-wizard-1').find('.pager .next').hide();  //当标题验证成功后，“下一步”按钮隐藏  修改此前出现的bug

                $('#bootstrap-wizard-1').find('.pager .finish').show(); //当标题验证成功后，“返回试题列表”按钮显示
                if (getQuestionKind == 1 || getQuestionKind == 2) {  //如果是单选题或者多选题
                    $("#OptionList").show();//选项列表显示
                    $("#optLib").show(); //用table呈现正确答案的div显示
                    $("#normalLib").hide(); //用label呈现正确的div隐藏
                     $("#PrewContent").hide();//内容隐藏
                }
                else  //除此之外的其他题型 
                {
                    $("#OptionList").hide();//选项列表显示
                    $("#optLib").hide(); //用table呈现正确答案的div隐藏
                    $("#normalLib").show(); //用label呈现正确的div显示
                    if (gdViewModel.NodeValue().SContent) {  //当前试题存在内容
                        $("#PrewContent").show();//内容显示
                    }
                    else
                    {
                        $("#PrewContent").hide();//内容隐藏
                    }

                }
                

                
                
                
            }

            
            $('#bootstrap-wizard-1').find('.form-wizard').children('li').eq(index - 1).addClass(
              'complete');
            $('#bootstrap-wizard-1').find('.form-wizard').children('li').eq(index - 1).find('.step')
            .html('<i class="fa fa-check"></i>');
        }
    });

   

    function gridViewModel() {
        var self = this;

        
        self.recordSet = ko.observableArray(); //选项数据集
      
        self.TFrecordSet = ko.observableArray();//判断题的两个选项集正确或错误10.3//test 
        self.AnswerRecordSet = ko.observableArray(); //选项数据集  new add
        self.IsOpenSet = ko.observable();
        //作为显示数据的表格的头部：显示文字和对应的字段名（辅助排序）
        self.headers = ko.observableArray(
             [
 { displayText: '选项', value: 'SOptionName', width: 'auto' },
 { displayText: '是否正确答案', value: 'IIsTrue', width: 'auto' }
 ]
            );

        //CRUD均通过ajax调用实现，这里提供用于获取ajax请求地址的方法
      
        //节点数据
        self.NodeValue=ko.observable({
            Id: '',
            ICousreId:'',
            SCourseCode:'',
            IProblemType:'',
            STitle:'',
            SContent:'',
            IStuOpen:'',
            SAnswer:'',
            ITeaCatalog:'',
            IHardLevel:'',
            IDiffLevel:'',
            SPointers:'',
            SKeyWords:'',
            SCharpter: '',
            SAnalysis:'',  //答案解析

        }),

        //初始化
        self.init = function () {
           
            self.DefaultAddQuestion();//初始化试题模板

          
            self.setCurrentQuestionKind();//所选试题类型

        }
        self.initEd = function ()
        {//结束初始化
        }

    


        //初始化判断题查询 10.3/test
        self.TFsearch = function () {

            $.ajax(
            {

                url: '/api/TestLibExt/FindOption/',
                type: "get",

                complete: function () {  //当数据加载完成，取消遮罩  by zjb
                    if (self.tableMaskElement) {
                        self.tableMaskElement.unmask();
                    };
                },
                success: function (result) {
                    self.TFrecordSet(result);//收集返回的选项集



                }
            });
        };
        //初始查询
        self.search = function () {

            $.ajax(
            {
               
                url: '/api/TestLibExt/FindOption/',
                type: "POST",  //修正请求类型，避免在ie浏览器下出现问题   update by yzp  1.1

                complete: function () {  //当数据加载完成，取消遮罩  by zjb
                    if (self.tableMaskElement) {
                        self.tableMaskElement.unmask();
                    };
                },
                success: function (result) {
                    self.recordSet(result);//收集返回的选项集


                    $(".optionName").editable();
                    $(".optionAns").editable({
                        source: [{ value: 1, text: '正确' }, { value: 0, text: '错误' }]
                        , success: function (response, newValue) {
                            gdViewModel.search();
                        }
                    });



                }
            });
        };


        //TO Add Method

        self.chaptesr = ko.observableArray();

        //在被选章里面绑定节
     
        self.arrayBindSesson = ko.observableArray();
        self.selectedchapter = ko.observableArray();//当前被选中的章
        self.myChange = function (a, b, c, d) {//改变所选章时移动

            self.arrayBindSesson.removeAll();//移除绑定的节

            var selV = $("#txtbSrSCharpter").find("option:selected").attr("data-value");
            if (selV == null || selV == "")
                return;
            $.getJSON("/api/TestLibExt/GetSession?ID=" + selV, null, function (data) {
                $.each(data, function (m, n) {

                    self.arrayBindSesson.push(n);

                });

            });
        };

       

        //删除选中的选项 
        self.DeleteModel = function (currentOption) {

            var optionID = currentOption.Id;

            if (optionID != null && typeof (optionID) != "undefined" && optionID != "") {
                $.ajax({
                    url: '/api/TestLibExt/DelOptions?id=' + optionID,
                    type: "POST",
                    success: function () {
                        alert("删除数据成功！");
                        self.search();
                    }
                })
            }
            
        }



        //新增选项  test
        self.DataAddModel = function () {
            $.ajax({
                async:false,
                url: "/api/TestLibExt/AddOptions/",
                type: "POST",
                success: function (result) {

                    self.search();
                    alert("新增选项成功！");

                }
            })
        }




        //绑定所选题型：
        self.QuestionKind = ko.observable();
        self.setCurrentQuestionKind = function () {
            var kind = getQuestionKind;//获取试题类型
            var tmpStr = "";

            switch (kind) {
                case '1':

                    tempStr = "单选题";

                    break;
                case '2':
                    tempStr = "多选题";
                    break;
                case '3':
                    tempStr = "判断题";
                default: break;
            }

            self.QuestionKind(tempStr)
        }


        //验证标题是否合法
        self.QuesDataValidate = function () {
            if ($("#TitleId").val() == "" || typeof ($("#TitleId").val()) == 'undefined') {
                alert("标题不能为空，请填写！");
                return 0;
            }
            else
                return 1;

        }


       
        //验证单选题的选项设置是否合法，不能全错 
        self.OptionsValidate = function () {
            var bol;
            $.ajax({
                async: false,  //设置为同步加载
                url: '/api/TestLibExt/OptionsValidate/',
                type: "POST",
                success: function (result) {
                    if (result == 0) {
                        alert("单选不能全为错，请重新填写！");
                        bol = 0;
                    }
                    else
                        bol = 1;
                }
            });
            return bol;
        }


        

        //取页面上的数据项
        self.CommonData = function () {
            /*--获取所有试题共同部分*/
            self.NodeValue().STitle = $("#TitleId").val();//从标题编辑栏里面获取值
            self.NodeValue().SPointers = $("#SPointersId").val();//获取知识点
            self.NodeValue().ICousreId = $("#HiddenCourseID").val(); //获取试题所属课程的Id  修改于10.20
            var IStuOpen = $('input:checkbox[name="checkbox-toggle"]:checked').val();//获取是否公开的ON/OFF
            var IHardLevel = $('input:radio[name="stars-rating"]:checked').val();//获取难易度rating
            var IDiffLevel = $('input:radio[name="rating"]:checked').val();//获取区分度

            var AnswerAnalysis = $("#AnswerAnalysis").val();  //获取题目的答案解析  添加于12.2

            var Charpter = $("#txtbSrSCharpter").find("option:selected").attr("value");//获取章optionsText
            var Test = $("#txtbSrITeaCatalog").find("option:selected").attr("value");//获取节  SAnalysis
            self.NodeValue().ITeaCatalog = Test;
            self.NodeValue().SCharpter = Charpter;

            self.NodeValue().SAnalysis = AnswerAnalysis;  //答案解析  添加于12.2

            //判断是否对学生公开
            if (IStuOpen == 1) {
                self.NodeValue().IStuOpen = 1;//对学生公开
            }
            else {
                self.NodeValue().IStuOpen = 0;//不对学生公开
            }
            //获取试题的难易度
            if (typeof (IHardLevel) != "undefined") {

                self.NodeValue().IHardLevel = IHardLevel;//获取难易度
            }
            else {
                self.NodeValue().IHardLevel = 0;
            }
            //获取试题的区分度
            if (typeof (IDiffLevel) != "undefined") {

                self.NodeValue().IDiffLevel = IDiffLevel;//区分度
            }
            else {
                self.NodeValue().IDiffLevel = null;
            }
            /*--/获取所有试题共同部分*/
            var kind = getQuestionKind;//获取当前的题型选项
            switch (kind) {//test 修改
                case '1':
                    //单选
                case '2':
                    //多选
                    break;
                case '3':  //判断  test 10.3
                 
                    var SAnswer = $('input:radio[name="answerRadio"]:checked').val();//获取判断题的正确答案
                  
                    
                    $.ajax({
                        type: "POST",
                        async: false,
                        url: "/api/TestLibExt/ChangeTFOption/",
                        data: { ID: SAnswer },
                        success: function (data) {
                            self.NodeValue().SAnswer = data.SOptionName;
                        }
                    });
                    
                   
                    
                    self.NodeValue().SContent = ue.getContent();//从内容编辑栏中获取数据
                    break;
                default:
                    break;
            }


        }



        //从页面获取数据，同时更新到数据库
        self.QuestionDataUpdate = function () {
           
            self.CommonData(); //取页面上共有的数据项

            
                $.ajax({
                    url: '/api/TestLibExt/QuestionUpdate/',
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify(self.NodeValue()),
                    success: function () {
                        self.PreviewData();
                        //alert("试题保存成功！");
                    }
                })
            


        }




        //设置选项正确与错误图标
        self.formatIsTrue = function (value) {
            if (value == 1)
                return "<i class='glyphicon glyphicon-ok ' style='color:green;'></i>";
            else
                return "<i class='glyphicon glyphicon-remove ' style='color:red;'></i>"; 
        }
        //默认生成试题模板
        self.DefaultAddQuestion = function () {
            var CourseId = $("#HiddenCourseID").val();  //获取当前课程的id
            $.ajax(
           {
               
               url: "/api/TestLibExt/GenNewQuestion" ,
               type: "post",
               data:{QuestType:getQuestionKind,CourseID:CourseId},

               complete: function () {  //当数据加载完成，取消遮罩  by zjb
                   if (self.tableMaskElement) {
                       self.tableMaskElement.unmask();
                   };
               },
               success: function (result) {

                   // self.TestLibRecordSet(result.LibItem);//获取返回的试题
                   //test 当判断题写完了过后这部分应该改成switch-case的形式
                   $("#TitleId").val(result.LibItem.STitle);
                   if (getQuestionKind == 1 || getQuestionKind == 2) {
                       self.search();
                   }
                   else if (getQuestionKind == 3)
                   {
                       self.TFsearch();
                   }
                   

               }
           })
        }


        //获取试题预览数据  添加于9.7 晚上 
        self.PreviewData = function () {

            $.ajax(
           {

               url: '/api/TestLibExt/GetPreviewData/',
               type: "POST",
                success: function (result) {
                    self.NodeValue(result.PreviewLib);
                    if (getQuestionKind == 1 || getQuestionKind == 2) {//test
                        self.AnswerRecordSet(result.LibOptionList);//收集返回的正确选项集
                    }
                    //是否对学生公开IsOpenSet标记“是/否”
                    if (result.PreviewLib.IStuOpen == 1) {
                        self.IsOpenSet("是")
                    }
                    else
                    {
                        self.IsOpenSet("否")
                    }

                   //难易度
                    var hardraido = $("input:radio[name='stars-show']"); //假设你的radio的name属性是 radio,用name选择器选择
                    var val = result.PreviewLib.IHardLevel; //你后台的值是3
                    if (result.PreviewLib.IHardLevel != 0) {
                        $("input:radio[name='stars-show'][ value='" + val + "']").attr("checked", true);
                        
                    }
                    //区分度
                   
                    var vall = result.PreviewLib.IDiffLevel; //你后台的值是3
                    if (result.PreviewLib.IDiffLevel != 0) {
                       
                        $("input:radio[name='show'][ value='" + vall + "']").attr("checked", true);

                    }
                   
                   if (getQuestionKind == 1 || getQuestionKind == 2) {
                       self.search();
                   }

               }
           })

        }

    }



    var gdViewModel = new gridViewModel();


    
   // gdViewModel.init();
    ko.applyBindings(gdViewModel);
    


   

});
